<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>lianxi</title>
  </head>
  <body>
    <script type="text/javascript">
    console.log("=======return 调用函数============");
    function add(x,y){
      return x+y;
      console.log("返回后面的的代码");
    }
    console.log(add(2,3));
    console.log("=======递归============");
    function fib(num){
      if(num>2){
        return fib( num - 2 )+fib(num-1);
      }else{
        return 1;
      }
    }
    console .log(fib(6));
  console.log("=======凡是可以使用值的地方，就可以使用函数============");
  var option=add;
  console.log(option(5,6));
  function a(op){
    return op;
  }
  a(add(8,9));
  var b={
    name:add,
  }
  console.log(b.name(5,6));
  console.log("=======name属性============");
  console.log("=======name属性返回紧跟在function关键字之后的那个函数名============");
  console.log("=======f1============");
  function f1() {
  }
  console.log(f1.name);
  var f2 = function () {

  }
  console.log("=======f2============");
  console.log(f2.name);
    console.log("=======length属性============");
      console.log("=======length属性返回函数预期传入的参数个数，即函数定义中的参数个数============");
      function f3(a,b,c,d,e) {
      }
      console.log(f3.length);
      function f4() {
        a();
        b();
        c();
        d();

      }
      console.log(f4.toString());

      console.log("=======利用这一点，可以变相实现多行字符串============");
      var f5 = function (val) {
        var arr = val.toString().split('\n');
        return arr.slice(1,arr.length-1).join('\n');
      }
      function f6() {
        /*
         这是一个
         多行注释
        */

      }
      console.log(f5(f6.toString()));
      console.log("=======全局变量，在函数外声明的变量============");
      console.log("=======局部变量，在函数内声明的变量============");
      var name = "debang";

        function f7() {
          return name;

        }
        function f8() {
          var age = 18;
          return name + "is good, this age is "+age;

        }
        console.log(f7());
        console.log(f8());
        console.log(f7()+f8());
    </script>
  </body>
</html>
